home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / a_utils / ffccflow / ffccflow.lha / ffccc+flow / ffccc / NAMOVE.f < prev    next >
Encoding:
Text File  |  1992-07-31  |  1.4 KB  |  57 lines

  1.       SUBROUTINE NAMOVE(SLIST,K1,K2,N2) 
  2. *-----------------------------------------------------------------------
  3. *   
  4. *   moves a set of names from one place in a list to another
  5. *   
  6. *   Input   
  7. *   SLIST           table   
  8. *   K1              start-1 of target position  
  9. *   K2              start-1 of source position  
  10. *   N2              number of names to move 
  11. *   
  12. *   Output  
  13. *   SLIST is rearranged 
  14. *   
  15. *-----------------------------------------------------------------------
  16.       include 'PARAM.h' 
  17.       PARAMETER (MBUFF=200) 
  18.       CHARACTER *(MXNMCH) SLIST(*),SBUFF(MBUFF) 
  19.       N=N2  
  20.       KADD=K1   
  21.       K=K2  
  22.       NMOV=ABS(K1-K2)   
  23.    10 CONTINUE  
  24.       NT=MIN(N,MBUFF)   
  25.       DO 20 I=1,NT  
  26.          SBUFF(I)=SLIST(K+I)
  27.    20 CONTINUE  
  28.       IF(K2.GT.K1)  THEN
  29.          DO 30 I=K,K-NMOV+1,-1  
  30.             SLIST(NT+I)=SLIST(I)
  31.    30    CONTINUE   
  32.          DO 40 I=1,NT   
  33.             SLIST(KADD+I)=SBUFF(I)  
  34.    40    CONTINUE   
  35.          IF(NT.LT.N) THEN   
  36.             N=N-NT  
  37.             K=K+NT  
  38.             KADD=KADD+NT
  39.             GOTO 10 
  40.          ENDIF  
  41.       ELSEIF(K2.LT.K1)  THEN
  42.          NMOV=NMOV-NT   
  43.          KADD=K1-NT 
  44.          DO 50 I=K2+1,K2+NMOV   
  45.             SLIST(I)=SLIST(NT+I)
  46.    50    CONTINUE   
  47.          DO 60 I=1,NT   
  48.             SLIST(KADD+I)=SBUFF(I)  
  49.    60    CONTINUE   
  50.          IF(NT.LT.N) THEN   
  51.             N=N-NT  
  52.             NMOV=NMOV+NT
  53.             GOTO 10 
  54.          ENDIF  
  55.       ENDIF 
  56.       END   
  57.